<template>
	<view>
		<view class="content">
			<view class="list">
				<view class="row" v-for="(row,index) in addressList" :key="index" @tap="select(row)">
					<view class="left">
						<view class="head">
							{{row.head}}
						</view>
					</view>
					<view class="center">
						<view class="name-tel">
							<view class="name">{{row.name}}</view>
							<view class="tel">{{row.tel}}</view>
							<view class="default" v-if="row.isDefault">
								默认
							</view>
						</view>
						<view class="address">
							{{row.address.region.label}} {{row.address.detailed}}
						</view>
					</view>
					<view class="right">
						<view class="icon bianji" @tap.stop="edit(row)">
							
						</view>
					</view>
				</view>
			</view>
		</view>
		<view class="add">
			<view class="btn" @tap="add">
				<view class="icon tianjia"></view>新增地址
			</view>
		</view>
	</view>
</template>
<script>
import api from '@/utils/api'

export default {
    data() {
        return {
            isSelect: false,
            addressList: []
        };
    },
    onShow() {
        // 页面显示时加载地址数据
        this.loadAddressData();
        
        uni.getStorage({
            key: 'delAddress',
            success: (e) => {
                let len = this.addressList.length;
                if (e.data.hasOwnProperty('id')) {
                    for (let i = 0; i < len; i++) {
                        if (this.addressList[i].id == e.data.id) {
                            this.addressList.splice(i, 1);
                            break;
                        }
                    }
                }
                uni.removeStorage({
                    key: 'delAddress'
                })
            }
        })
        uni.getStorage({
            key: 'saveAddress',
            success: (e) => {
                let len = this.addressList.length;
                if (e.data.hasOwnProperty('id')) {
                    for (let i = 0; i < len; i++) {
                        if (this.addressList[i].id == e.data.id) {
                            this.addressList.splice(i, 1, e.data);
                            break;
                        }
                    }
                } else {
                    let lastid = this.addressList[len - 1];
                    lastid++;
                    e.data.id = lastid;
                    this.addressList.push(e.data);
                }
                uni.removeStorage({
                    key: 'saveAddress'
                })
            }
        })
    },
    onLoad(e) {
        if (e.type == 'select') {
            this.isSelect = true;
        }
    },
    methods: {
        // 加载地址数据
        async loadAddressData() {

            try {
                const response = await api.getMyAddressList();
				console.log(response);
				
                if (response.code === 200) {
                    // 转换后端数据格式为前端需要的格式
                    this.addressList = response.data.map(item => {
                        return {
                            id: item.id,
                            name: item.name,
                            head: item.name.charAt(0), // 取姓名第一个字符作为头像
                            tel: item.phone,
                            address: {
                                region: {
                                    label: `${item.province}-${item.city}-${item.county}`,
                                    value: [], // 如果需要具体的区域值，可以根据实际情况处理
                                    cityCode: "" // 如果需要城市代码，可以根据实际情况处理
                                },
                                detailed: item.detail
                            },
                            isDefault: item.defaultFlag === "1" // 将字符串"1"转换为布尔值
                        };
                    });
                } else {
                    uni.showToast({
                        title: response.msg || '获取地址列表失败',
                        icon: 'none'
                    });
                }
            } catch (error) {
                console.error('获取地址数据失败:', error);
                uni.showToast({
                    title: '网络请求失败',
                    icon: 'none'
                });
            }
        },
        edit(row){
            uni.setStorage({
                key:'address',
                data:row,
                success() {
                    uni.navigateTo({
                        url:"edit/edit?type=edit"
                    })
                }
            });
            
        },
        add(){
            uni.navigateTo({
                url:"edit/edit?type=add"
            })
        },
        select(row){
            //是否需要返回地址(从订单确认页跳过来选收货地址)
            if(!this.isSelect){
                return ;
            }
            uni.setStorage({
                key:'selectAddress',
                data:row,
                success() {
                    uni.navigateBack();
                }
            })
        }
    }
}
</script>

<style lang="scss">
view{
	display: flex;
}
	.icon {
		// &.bianji {
		// 	&:before{content:"\e61b";}
		// }
		// &.tianjia {
		// 	&:before{content:"\e81a";}
		// }
	}
	.add{
		position: fixed;
		bottom: 0;
		width: 100%;
		height: 120upx;
		justify-content: center;
		align-items: center;
		.btn{
			box-shadow: 0upx 5upx 10upx rgba(0,0,0,0.4);
			width: 70%;
			height: 80upx;
			border-radius: 80upx;
			background-color: #f06c7a;
			color: #fff;
			justify-content: center;
			align-items: center;
			.icon{
				height: 80upx;
				color: #fff;
				font-size: 30upx;
				justify-content: center;
				align-items: center;
			}
			font-size: 30upx;
		}
	}
	.list{
		flex-wrap: wrap;
		.row{
			width: 96%;
			padding: 20upx 2%;
			.left{
				width: 90upx;
				flex-shrink: 0;
				align-items: center;
				.head{
					width: 70upx;
					height: 70upx;
					background:linear-gradient(to right,#ccc,#aaa);
					color: #fff;
					justify-content: center;
					align-items: center;
					border-radius: 60upx;
					font-size: 35upx;
				}
			}
			.center{
				width: 100%;
				flex-wrap: wrap;
				.name-tel{
					width: 100%;
					align-items: baseline;
					.name{
						font-size: 34upx;
					}
					.tel{
						margin-left: 30upx;
						font-size: 24upx;
						color: #777;
					}
					.default{

						font-size: 22upx;
						
						background-color: #f06c7a;
						color: #fff;
						padding: 0 18upx;
						border-radius: 24upx;
						margin-left: 20upx;
					}
				}
				.address{
					width: 100%;
					font-size: 24upx;
					align-items: baseline;
					color: #777;
				}
			}
			.right{
				flex-shrink: 0;
				align-items: center;
				margin-left: 20upx;
				.icon{
					justify-content: center;
					align-items: center;
					width: 80upx;
					height: 60upx;
					border-left: solid 1upx #aaa;
					font-size: 40upx;
					color: #777;
				}
			}
		}
	}
</style>
